package com.jacob.androidstudy.javanote;

/**
 * 继承自Object类的方法都很重要，建议尽量全部覆盖。
 * 
 */
public class $10_Object类 {

	/**
	 * 返回该对象的哈希码值。支持此方法是为了提高哈希表的性能。
	 * hashCode 的常规协定是：
	 * 1.在Java应用程序执行期间，在对同一对象多次调用 hashCode 方法时，必须一致地返回相同的整数。
	 *    前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行，该整数无需保持一致。
	 * 2.如果根据 equals 方法，两个对象是相等的，
	 *    那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
	 * 3.如果根据 equals 方法，两个对象不相等，那么对这两个对象中的任一对象上调用 hashCode 方法不要求一定生成不同的整数结果。
	 *    但是，程序员应该意识到，为不相等的对象生成不同整数结果可以提高哈希表的性能。
	 */
	@Override
	public int hashCode() {
		return super.hashCode();
	}

	/**
	 * 比较自己和参数对象是否相等。
	 * equals 方法在非空对象引用上实现相等关系：
	 * 自反性：对于任何非空引用值 x，x.equals(x) 都应返回 true。
	 * 对称性：对于任何非空引用值 x 和 y，当且仅当 y.equals(x) 返回 true 时，x.equals(y) 才应返回 true。
	 * 传递性：对于任何非空引用值 x、y 和 z，如果 x.equals(y) 返回 true，并且 y.equals(z) 返回 true，那么 x.equals(z) 应返回 true。
	 * 一致性：对于任何非空引用值 x 和 y，多次调用 x.equals(y) 始终返回 true 或始终返回 false，前提是对象上 equals 比较中所用的信息没有被修改。
	 * 对于任何非空引用值 x，x.equals(null) 都应返回 false。
	 * 
	 */
	@Override
	public boolean equals(Object obj) {
		return super.equals(obj);
	}

	/**
	 * 复制并返回一个当前对象的拷贝。
	 * 浅复制：只复制目标对象中, 域的值. (基本类型复制值, 对象引用复制地址)
	 * 深复制：目标对象中，若域是基本类型，复制值；若域是对象引用，再对该对象进行深复制。
	 */
	@Override
	protected Object clone() throws CloneNotSupportedException {
		return super.clone();
	}

	/**
	 * 返回该对象的字符串表示。强烈建议所有子类都重写此方法。
	 * Object 类的 toString 方法返回一个字符串它的值等于:
	 * getClass().getName() + '@' + Integer.toHexString(hashCode())
	 */
	@Override
	public String toString() {
		return super.toString();
	}

	@Override
	protected void finalize() throws Throwable {
		super.finalize();
	}
	
	

}
